#include "sys.h"
#include "log.h"
#include "thread_pool.h"
#include "process_monitor.h"
#include "dial.h"

int CapEnable = 0;
static OPT_T opts[] = {
    { "--cap-enable", &CapEnable, OPT_NONE, "enable capture" },
};

thread_pool_t* Tpool;

extern int icmp_task_init(int argc, char** argv);
extern int domain_task_init(int argc, char** argv);
extern int tcp_conn_task_init(int argc, char** argv);
extern int http_task_init(int argc, char** argv);
extern int traceroute_task_init(int argc, char** argv);
extern int tcp_ping_conn_task_init(int argc, char** argv);
int udp_task_init(int argc, char** argv);
int thpool_test(int argc, char** argv);

void test_task(int argc, char** argv)
{
   // icmp_task_init(argc, argv);  
   //  tcp_conn_task_init(argc, argv);
   //  domain_task_init(argc, argv);
   //  traceroute_task_init(argc, argv);
   //   tcp_ping_conn_task_init(argc, argv);
    http_task_init(argc, argv);
    // thpool_test(argc, argv);
    // udp_task_init(argc, argv);
}

int opt_deal(int argc, char **argv){
    log_initv(argc, argv);

    int cap_opt(int argc, char** argv);
    cap_opt(argc, argv);

    return opt_parse(opts, sizeof(opts), argc, argv);
}

int main(int argc, char** argv)
{
    process_info_t pinfo;
    char ipstr[32] = {0};

    if (0 > opt_deal(argc, argv)) {
        return 0;
    }

    // while(1){
    //     sleep(5);
    //     system("echo \"nameserver 8.8.8.8\" > /etc/resolv.conf");
    // }
    
    // wd_ipaddr2("www.qq.com", ipstr);
    // log_trace("ipstr:%s", ipstr);
    // return 0;

    Tpool = thread_pool_new(1);
    thread_pool_set_auto_extern(Tpool);

    if (CapEnable) {
        int cap_run();
        cap_run();
        return 0;
    }
    
    test_task(argc, argv);
    // thread_pool_wait(Tpool);
    while(1){

        process_info(&pinfo);
        // process_info_print(&pinfo);
        sleep(3);
    }
    return 0;
}
